18 research outputs found

    On-stack replacement, distilled

    Get PDF
    On-stack replacement (OSR) is essential technology for adaptive optimization, allowing changes to code actively executing in a managed runtime. The engineering aspects of OSR are well-known among VM architects, with several implementations available to date. However, OSR is yet to be explored as a general means to transfer execution between related program versions, which can pave the road to unprecedented applications that stretch beyond VMs. We aim at filling this gap with a constructive and provably correct OSR framework, allowing a class of general-purpose transformation functions to yield a special-purpose replacement. We describe and evaluate an implementation of our technique in LLVM. As a novel application of OSR, we present a feasibility study on debugging of optimized code, showing how our techniques can be used to fix variables holding incorrect values at breakpoints due to optimizations

    An Algorithmic Approach to the Detection and Prevention of Plagiarism

    Get PDF

    High-level debugging assistance via optimizing compiler technology (Extended abstract)

    No full text
    © 1983 ACM. A primary benefit of most software tools is either the prevention or the detection of human error in the development process. Languages, such as Pascal and Ada, have been designed with features such as strong typing to increase the amount of error detection that can be done by the compiler. Syntax directed editors [II] also decrease the opportunity for the introduction of human error. Our paper describes some of the debugging assistance ~hich can be provided to a user during the transformation of a program by an optimizing compiler. Our premise is that the additional information obtained during optimization could warrant the sole use of optimizing compilers during software development. The idea behind static or transformational analysis is that bug symptoms can be detected via implicit assertions due to language semantics (e.g., range or domain assertions in Pascal, asserting that all referenced objects are defined) and explicit assertions as specified by the programmer oz environment

    A Program to Count Operators and Operands for ANSI—FORTRAN Modules

    Get PDF

    A note on the relationship between the expression and the automatic detection of parallelism in programs

    No full text
    A certain balance between language features and compiler complexity is required to achieve reasonable speedups and machine efficiency on multiprocessors. This short note contains one picture and about a thousand words discussing this relationship between the explicit expression and the automatic detection of parallelism in programs. © 1986

    Intermediate Program Representations in Compiler Construction: A Supplemental Bibliography

    No full text

    High-level debugging assistance via optimizing compiler technology (Extended abstract)

    No full text
    © 1983 ACM. A primary benefit of most software tools is either the prevention or the detection of human error in the development process. Languages, such as Pascal and Ada, have been designed with features such as strong typing to increase the amount of error detection that can be done by the compiler. Syntax directed editors [II] also decrease the opportunity for the introduction of human error. Our paper describes some of the debugging assistance ~hich can be provided to a user during the transformation of a program by an optimizing compiler. Our premise is that the additional information obtained during optimization could warrant the sole use of optimizing compilers during software development. The idea behind static or transformational analysis is that bug symptoms can be detected via implicit assertions due to language semantics (e.g., range or domain assertions in Pascal, asserting that all referenced objects are defined) and explicit assertions as specified by the programmer oz environment

    A Simplified Framework for Reduction in Strength

    No full text
    Reduction in strength is a traditional transformation for speeding up loop execution on sequential processors. The inverse transformation, induction variable substitution, can also speed up loops by decreasing register requirements, although it is typically a normalizing step in the detection of array dependences by parallelizing compilers. This paper presents a simple framework for performing these transformations. In contrast to previous approaches to strength reduction, no unnecessary temporary variables or dead code fragments are introduced, only relevant intermediate language fragments are examined, iteration test replacement is not handled as a special case, and the execution time of the target code is never increased. The method is particularly easy to visualize, making it a useful teaching tool as well. © 1989 IEE

    High-level debugging assistance via optimizing compiler technology

    No full text
    A primary benefit of most software tools is either the prevention or the detection of human error in the development process. Languages, such as Pascal and Ada, have been designed with features such as strong typing to increase the amount of error detection that can be done by the compiler. Syntax directed editors [11] also decrease the opportunity for the introduction of human error. Our paper describes some of the debugging assistance which can be provided to a user during the transformation of a program by an optimizing compiler. Our premise is that the additional information obtained during optimization could warrant the sole use of optimizing compilers during software development. © 1983, ACM. All rights reserved
    corecore